/*
 * transGeometrica.h
 *
 *  Created on: 16-dic-2008
 *      Author: burce
 */

#ifndef TREANGEOMETRICA_H_
#define TREANGEOMETRICA_H_

#include <QSize>
#include <QImage>
#include <iostream>
using namespace std;
#include "imagen.h"
#include <math.h>

class TransGeometrica {
private:
	static int bilineal(const QImage& image, double x, double y);
	static void newSize(int wOrig, int hOrig, float angulo, int& w, int& h, float& xmin, float& ymin);

public:
	TransGeometrica();
	virtual ~TransGeometrica();
	static Imagen* espejoHorizontal(const QImage& image);
	static Imagen* espejoVertical(const QImage& image);
	static Imagen* transpuesta(const QImage& image);
	static Imagen* zoom(const QImage& image, int w, int h, bool bi = false);

	static Imagen* girar90(const QImage& image);
	static Imagen* girar180(const QImage& image);
	static Imagen* girar270(const QImage& image);

	//Rotación con transformación inversa
	static Imagen* rotacionI(const QImage& image, float angulo, bool bi = false);
	static Imagen* rotacionD(const QImage& image, float angulo);
};

#endif /* TRANSGEOMETRICA_H_ */
